#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int N=2e5+10;
struct node
{
	ll l,r;
}p[N];
ll pos[4*N];
ll a[2*N];
ll b[N];
int main()
{
	IOS;
	int n;
	cin>>n;
	vector<ll> pos;
	pos.push_back(-2);
	for(int i=0;i<n;i++)
	{
		cin>>p[i].l>>p[i].r;
		pos.push_back(p[i].l-1);
		pos.push_back(p[i].l);
		pos.push_back(p[i].r);
		pos.push_back(p[i].r+1);
	}
	sort(pos.begin(),pos.end());
	
	pos.erase(unique(pos.begin(),pos.end()),pos.end());
	
//	cout<<pos.size()<<endl;
	for(int i=0;i<n;i++)
	{
		int l=lower_bound(pos.begin(),pos.end(),p[i].l)-pos.begin();
		int r=lower_bound(pos.begin(),pos.end(),p[i].r)-pos.begin();
		a[l]++;
		a[r+1]--;
	}
	
	for(int i=1;i<pos.size();i++)
	{
		a[i]=a[i-1]+a[i];
//		cout<<a[i]<<' '<<pos[i]<<endl;
	}
	
	for(int i=1;i<pos.size()-1;i++)
	{
		ll cnt=pos[i+1]-pos[i];
		b[a[i]]+=cnt;
	}
	for(int i=1;i<=n;i++)
	{
		cout<<b[i]<<endl;
	}

	return 0;
}

